#ifndef __DEFS78_H__
#define __DEFS78_H__



typedef __int64 I64;
#define UCHAR unsigned char
#define MAX(x,y) (((x)>(y))?(x):(y))
#define MIN(x,y) (((x)<(y))?(x):(y))
#define max(a,b) (((a) > (b)) ? (a) : (b))

//////////////////////////
// Search Parameters    //
//////////////////////////




#define USE_IDA_STAR_SEARCH 0
#define MAKE_ITERATIVE_DEP 0 
#define FIND_DIVERSITY 0
#define OperateOperatorsFromBigToSmall 0

#define SKIP_TO_DUAL 1
#define Allways_Skip 0

#define HEURISTIC_LOWER_BOUND  2			// {0,1,2} - 0 means regular, 1 means dual
#define HEURISTIC_HIGHER_BOUND 2			// {0,1,2} - 2 means (max(reg,dual))
#define BPMX_LOWER_BOUND 1					// {0,1} - 0 Don't use BPMX
#define BPMX_HIGHR_BOUND 1					// {0,1} - 1 Use BPMX


#define Should_Avoid_LOOPS 1 


#define Should_Get_Run_Time_Heuristic_Distribution 0
#define Maximum_Number_Of_Nodes 1000000

#define PRINT_SOLUTION_PATH 0
#define SHOULD_PRINT_THERASH 1
#define ReadProblemsFromFile 1
#define GenerateProblemsFile 0

#define PrintMainLog 1 

///////////////////////////
//    Game Parameters    //
///////////////////////////
#define SHRINKDATABASE 0 //can be done only when max value in PDB is 15

/*
#define SIZE  11
#define TABLESIZE 11*10*9*8*7*6*5 
#define PATTERNSIZE 7 
//1 1000 ../Problems/problems11.d  ../Dumps/Size11P7/Size11Pattern_4_5_6_7_8_9_10
//*/

/*
#define SIZE  12
#define TABLESIZE 12*11*10*9*8*7*6 //- size of visited table 980179200
#define PATTERNSIZE 7
//1 1000 ../Problems/problems12.d  ../Dumps/Size12P7/Size12Pattern_5_6_7_8_9_10_11
//*/


/*
#define SIZE  13
#define TABLESIZE 13*12*11*10*9*8*7 //- size of visited table 980179200
#define PATTERNSIZE 7
//1 1000 ../Problems/problems13.d  ../Dumps/Size13P7/Size13Pattern_6_7_8_9_10_11_12
//*/


#define SIZE  14
#define TABLESIZE 14*13*12*11*10*9*8 //- size of visited table 980179200
#define PATTERNSIZE 7
//1 10 ../Problems/problems14.d  ../Dumps/Size14P7/Size14Pattern_7_8_9_10_11_12_13
//*/


/*
#define SIZE  15
#define TABLESIZE 15*14*13*12*11*10*9 //
#define PATTERNSIZE 7
//1 100 ../Problems/problems15.d  ../Dumps/Size15P7/Size15Pattern_8_9_10_11_12_13_14
//*/

/*
#define SIZE  16
#define TABLESIZE 16*15*14*13*12*11*10 //- size of visited table
#define PATTERNSIZE 7
//1 100 ../Problems/problems16.d  ../Dumps/Size16P7/Size16Pattern_9_10_11_12_13_14_15 
//*/


/*
#define SIZE  17
#define TABLESIZE 17*16*15*14*13*12*11 //- size of visited table
#define PATTERNSIZE 7
//1 10 ../Problems/problems17.d ../Dumps/Size17P7/Size17Pattern_10_11_12_13_14_15_16
//*/



/*#define TABLESIZE 17*16*15*14*13*12*11*10 //- size of visited table
#define PATTERNSIZE 8
*/
//1 10 ../Problems/problems18.d ../Dumps/Size17P8/Size17Pattern_9_10_11_12_13_14_15_16





/*#define SIZE  10
#define TABLESIZE 10*9*8*7*6 //- size of visited table
#define PATTERNSIZE 5
#define SHRINKDATABASE 1 //can be done only when max value in PDB is 15
*/

//1 1000 ../dumps/SIZE17Pattern9Shrinked/1000ProbSize17.d  ../dumps/SIZE17Pattern9Shrinked/Size17Spin4Pattern_0_1_2_3_4_5_6_7_8


#endif